Firmware is a set of hardware setup programs. Firmware is typically stored in flash memory or read only memory. Firmware includes programs such as device drivers, which are used to activate the hardware of a standard computer system. For example, a personal computer may include hardware for performing operations such as reading keystrokes from a keyboard, transmitting information to a video display, or sending information to a printer.
The operating system (OS) performs functions such as scheduling application programs and resolving conflicts among applications that request access to the same resources. Moreover, operating systems communicate service requests from application programs to the hardware device drivers. Examples of operating systems include DOS, Windows, and UNIX.
The Extensible Firmware Interface (EFI) is an architecture specification. The EFI provides an interface between the OS and the platform firmware. The interface is in the form of data tables that contain platform-related information, and boot and runtime service calls that are available to the OS and its loader. The EFI helps provide a standard environment for booting the OS and running system maintenance applications.
The EFI provides a coherent, scalable platform environment. The specification defines a complete solution for the firmware to completely describe platform features and surface platform capabilities to the OS during the boot process. The EFI definitions are compatible with both 32 bit Intel Architecture (IA-32) and 64 bit Intel Architecture (IA-64) based processors.
FIG. 1 shows the principal components of EFI and their relationship to the platform hardware 150 and the OS software 110. The platform firmware is able to retrieve the OS loader image from the EFI system partition 100. The specification provides for a variety of mass storage device types including disk, CD-ROM, and DVD as well as remote boot via a network.
Once the platform firmware has begun to retrieve the OS loader image, the OS loader 120 continues to boot the complete operating system 110 at approximately the same time. In doing so, the OS loader may use the EFI boot services 130 and interfaces defined by EFI or other required specifications 160 to survey, comprehend, and initialize the various platform components and the OS software that manages them. The EFI runtime services 140 and console services 170 are also available to the OS loader 120 during the boot phase.